package com.example.message

import io.reactivex.Observable

interface IMessageBus {
    /**
     * 订阅普通事件
     */
    fun <T:MessageEvent> toObservable(eventType:Class<T>): Observable<T>

    /**
     * 订阅粘性事件
     */
    fun <T:MessageEvent> toObservableSticky(eventType:Class<T>):Observable<T>

    /**
     * 发送普通事件
     */
    fun post(messageEvent: MessageEvent)

    /**
     * 发送粘性事件
     */
    fun postSticky(messageEvent: MessageEvent)


    fun clearSticky()


    fun clearSticky(clazz: Class<*>)
}